<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>构造函数与class类使用访问器</title>
</head>
<body>
    
</body>
<script>
    // 构造函数的函数名第一个字母一定要大写
    function User(name,age){
        let data = {name,age}
        // 设置属性的特性 这里使用到了Object.defineProperties(对象，属性集)
        Object.defineProperties(this,{
            name:{
                get(){
                    console.log(data.name)
                },
                set(value){
                    data.name = value
                }
            },
            age:{
                get(){
                    console.log(data.age)
                },
                set(value){
                    data.age = value
                }
            }
        })
    }
    let user = new User('jimmy',22)  //User {}
    console.log(user)
    user.name  // jimmy
    user.age  // 22
    user.name = 'xuexue'
    user.age = 18
    user.name  // xuexue
    user.age  // 18

    class person{
        constructor(name,age){
            this.data = {name,age}
        }
        set name(value){
            this.data.name = value
        }
        set age(value){
            this.data.age = value
        }
        get name(){
            console.log(this.data.name)
        }
        get age(){
            console.log(this.data.age)
        }
    }
    let kangkang = new person('kangkang',19)
    kangkang.name  //kangkang
    kangkang.age  //19
    kangkang.name = 'lili'
    kangkang.age = 14
    kangkang.name  //lili
    kangkang.age  //14

    // 这个就是使用类的方法创建  使用类其实就是使用构造函数的一个语法糖  更少的代码  也更容易理解
</script>
</html>